/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accesoDatos;

/**
 *
 * @author Juan David
 */
import java.sql.*;
import java.util.Vector;
import logica.*;

public class DaoTesis {
    
    FachadaBD fachada;
    
   public DaoTesis(){
     fachada=new FachadaBD();
    }
     public int guardarTesis(Tesis t,String cod_prof){
        String sql_guardar;
        int numFilas=0;
        sql_guardar="INSERT INTO Tesis(cod_est,titulo, nivel,fecha_inicio,estado) VALUES ('" +
                t.getCod_est()+ "', '" + t.getTitulo() +  "', '" +
                  t.getNivel() + "', '"  + 
                t.getFechaIni() + "','" + t.getEstado()+"')";
        
        String sql2 = "INSERT INTO dirigir_tesis (id_profesor, id_est) VALUES('" + cod_prof + "','" + t.getCod_est() + "')";
        try{
            Connection conn= fachada.conectar();
            Statement sentencia = conn.createStatement();
            numFilas = sentencia.executeUpdate(sql_guardar);
            numFilas += sentencia.executeUpdate(sql2);
            fachada.desconectar(conn);
            return numFilas;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return -1;
}
     
     public Tesis consultarTesis(String cod_est){
        Tesis t= new Tesis();
        String sql_select;
        sql_select="SELECT cod_est, titulo, nivel, fecha_inicio, fecha_fin, estado FROM Tesis WHERE cod_est= '"+cod_est+"'";
         try{
            Connection conn= fachada.conectar();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);
            
            //
            while(tabla.next()){
              t.setCod_est(tabla.getString(1));
              t.setTitulo(tabla.getString(2));
              t.setNivel(tabla.getString(3));
              t.setFechaIni(tabla.getDate(4));
              t.setFechaFin(tabla.getDate(5));
              t.setEstado(tabla.getString(6));

            }
            fachada.desconectar(conn);
             System.out.println("Tesis Consultada y conexion cerrada");

         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return null;
    }
     
     public Vector<Tesis> consultarTesisDirigidas(String id_pro){
         
         Vector<Tesis> reporte =new Vector(1,1);
         String consulta_sql = "SELECT * FROM tesis"+
                                "WHERE cod_est IN (SELECT id_est FROM dirigir_tesis WHERE id_profesor= '"+id_pro+"')";
                                
         
        
                              
         
         try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            
            while(res.next()){
                Tesis tesis=new Tesis();
                tesis.setCod_est(res.getString(1));
                tesis.setTitulo(res.getString(2));
                tesis.setNivel(res.getString(3));
                tesis.setFechaIni(res.getDate(4));
                tesis.setFechaFin(res.getDate(5));
                tesis.setCod_est(res.getString(6));
                tesis.setNivel(res.getString(7));
                
                reporte.add(tesis);
            }
           
           
            
            fachada.desconectar(c);
            System.out.println("Tesis Dirigidas consultas y conexion cerrada");
             return reporte;   
            }
           catch(SQLException e){}
        catch(Exception e){}
        
        return null;
     }
             
     
     public Vector<Tesis> consultarTesisGrupo(String cod_est){
         
         Vector<Tesis> reporte = new Vector(1,1);
         String sql="SELECT tesis.nombre,profesor.nombre,Grupo_investigacion.nombre"
                 + "FROM Tesis, Dirigir_Tesis, Estudiante, Profesor, Grupo_investigacion "
                 + "WHERE Tesis.cod_est=Dirigir_Tesis.id_est "
                 + "and Dirigir_Tesis.id_profesor=Profesor.identificaion"
                 + "and Grupo_investigacion.identificacion=Estudiante.cod_grupo"
                 + "and Dirigir_Tesis.id_est=Estudiante.cod_est";
               
         
       try{  
         
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(sql);
            
            while(res.next()){
                Tesis tesis=new Tesis();
                tesis.setCod_est(res.getString(1));
                tesis.setTitulo(res.getString(2));
                tesis.setNivel(res.getString(3));
                tesis.setFechaIni(res.getDate(4));
                tesis.setFechaFin(res.getDate(5));
                tesis.setNivel(res.getString(6));
                
                
                reporte.add(tesis);
            }
            fachada.desconectar(c);
            System.out.print("Tesis consultadas y conexion cerrada");
            return reporte;
    
    
    }
     catch(SQLException e){}
        catch(Exception e){}
        
        return null;
    
    } 
     
     public int asignarCodirector(String cod_profe,String cod_est){
        String sql;
        int numFilas=0;
        sql = "INSERT INTO dirigir_tesis (id_profesor, id_est) VALUES('"+ cod_profe +"','" + cod_est +"')";
        try{
            Connection conn= fachada.conectar();
            Statement sentencia = conn.createStatement();
            numFilas = sentencia.executeUpdate(sql);
            fachada.desconectar(conn);
            System.out.println("se inserto una tesis");
            return numFilas;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return -1;
}
         
  }
     
     

     
     
     
     
     
   

